package ntd.block.file.bo;

import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.StrUtil;
import lombok.Data;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

@Data
public class ComDiskFileBO {

    /** 文件名称 */
    private String name;

    /** 大小 */
    private long size;

    /** 是否文件夹 */
    private boolean isDir;

    /** 所在路径 - 必须以/结尾 */
    private String path;

    /** 原始文件对象 */
    private File file;

    /** 子文件 */
    private List<ComDiskFileBO> children = new ArrayList<>();

    public String abdPath() {
        return StrUtil.format("{}\\\\{}", this.path, this.name);
    }

    public static ComDiskFileBO transform(File file) {
        ComDiskFileBO comDiskFileBO = new ComDiskFileBO();
        comDiskFileBO.setName(file.getName());
        comDiskFileBO.setPath(file.getPath());
        comDiskFileBO.setDir(file.isDirectory());
        if (!comDiskFileBO.isDir()) {
            comDiskFileBO.setSize(FileUtil.size(file));
        }
        return comDiskFileBO;
    }

}
